¶ … Human Element
Computer systems design has come a long way from the time when Dijkstra first began exploring time sharing mechanism in the workings of the keyboard. In his day, computers were the realms of scientists and technical people. Operating systems designers were more concerned with processing ability. Human factors and "user friendliness" were terms that would not be a part of their vocabulary for many years to come. At the time of their early work, most of the population was still amazed at the automatic toaster and the television. Many early designers did not think about the common person eventually becoming a consumer of their product in a major way.
Dijkstra had vision beyond his time period and was one of the first to consider human factors in systems design. The first concept to be considered was the reduction of time spent waiting for the system to process the line of commands in its que. Dijkstra realized that if people pressed the keypad, they wanted a relatively quick response. They did not wish to type very slowly so as not to clog the system. In this case, they could write the information much more quickly and efficiently. Dijkstra wrote close to 1000 articles during his time as Professor Emeritus at the University of Texas. He realized in the early days of operating system design that computers had the ability to become familiar household items, but only if they were easy to use and did not cause more problems than they solved.
Early operating systems designers were more concerned with how to make it happen, rather than how long does it take. Dijkstra's philosophy added an additional element and considered usability in operation system design. He published hundreds technical mathematical array systems, peripheral devices and other such topics. His inventions and algorithms showed an exceptional level of genius. However, in these designs he kept his focus on ease of use and made this his key priority.
There were many systems designers who were his technical equal, but few had the foresight to make the computer marketable to the general public. He tackled systems design form a problem-solution perspective instead of just designing bigger and bigger systems, he realized that a system that was clumsy and slow would be on no use to humankind. While other designers focused on faster and bigger, Dijkstra preached simplicity. He also emphasized stability. If the system continuously locked and crashed then it was of no use to the user. Dijkstra realized that these issues were important if computers were to enter into mainstream society.
Bertrand Meyer expanded on the works of Dijkstra when he developed a way to model the highly dynamic nature of the run-time structures created by object-oriented programs. He stated,
Efforts to reason formally about programs, and in particular to prove their properties mathematically, have no practical value unless they can handle all the language facilities on which realistic programs depend.."1
This was essentially the same point made by Dijkstra. Early devices operated sequentially and the typewriters had the problem where the typewriter arms could become tangled. This was one example of the user issues that would mean the acceptance of systems by the early system designers. Hardware was expensive and still remains the most expensive part of the system. Dijkstra states that, "the arrangement would violate the reasonable requirement the no (cheap) program should be able to damage your (expensive) machine."2
He expanded on this idea by stating that, "for economic reasons one wants to avoid in a multiprogramming system the so-called 'busy form of waiting,' in which the central processor is unproductively engaged in the waiting cycle of a temporarily stopped program." He later explains that it is better to grant the processor to a program that can actually continue working.3 This prioritization of he task scheduler is one element of system design the showed a concern for the end user. Dijkstra knew that no one likes to sit around waiting for his or her computer to "think."
Engineers often become so engaged in the design process that they lose sight of the original goal of the project. Programmers often utilize the philosophy, "code first, debug later." The proper order should be "think first, code later" as Djikstra points out.4. If they would do this, debugging would take less time and the end product would be more likely to meet intended user needs. In his article The Next Fifty Years, Dijkstra emphasized the need to think and plan, not only in programming but also with all elements of system...
Our semester plans gives you unlimited, unrestricted access to our entire library of resources —writing tools, guides, example essays, tutorials, class notes, and more.
Get Started Now